package com.bytezero.inherit;

/*
 * 面向对象的特征二：继承性
 * 
 * 一.继承性的好处：
 * ①减少了代码的冗余，提供了代码的复用性
 * ②便于功能的拓展
 * ③为之后的多态性，提供了前提
 * 
 * 
 * 二.继承性的格式  class A extends B{}
 *   A:子类  派生类   subclass
 *   B:父类  超类  基类  superclass
 *   
 *   体现：一旦子类A继承父类B以后，子类A中就获取了父类B中声明的所有的：属性，方法
 *        特别的，父类中声明为private的属性或方法，子类继承父类以后，仍然认为获取了
 *     父类中的私有结构。
 *   
 *   只是因为封装性的影响，使得子类不能直接调用父类的结构而已。
 *   
 *   子类继承父类以后，还可以声明自己的属性和方法，实现功能的拓展。
 *   
 *   子类和父类的关系，不同于集合和子集的关系。
 *   
 *   extends：延展，拓展
 *   
 * 三.Java中关于继承性的规定
 *    1.一个类可以被多个子类继承
 *    2.单继承：一个类只能有一个父类   （C++可以多继承）
 *    3.子父类是相对的概念。多层继承
 *    4.子类直接继承的父类，成为：直接父类    
 *      子类间接继承的父类为：简介父类
 *    5.子类继承父类以后，就获取了直接父类以及所有间接父类声明的属性和方法
 *    
 *  四.1.如果我们没有显示的声明一个父类的话，则此类继承与 java.long.Object类
 *     2.所有的Java类（除 java.long.Object类外），都直接或间接的继承 java.long.Object类.
 *     3.意味着，所有Java类具有 java.long.Object类声明的功能。
 * 
 */
public class ExtendsTest 
{
  public static void main(String[] args)
  {
	  Person p1 = new Person();
	 // p1.age = 1;
	  p1.eat();
	  //p1.sleep();
	
	  p1.setAge(30);
	  System.out.println(p1.getAge());
	  
	  
	  
	  
	  
	  Student s1 = new Student();
	  s1.eat();
	  //s1.sleep();
	  s1.name = "Tom";
	  s1.setAge(10);
	  System.out.println(s1.getAge());
	  
	  s1.study();
	  s1.breath();
	  
	  
	  Creature c = new Creature();
	  c.toString();
	
  }
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
}



























































































